package br.com.linhadotempo.util;

import com.opensymphony.xwork2.ActionContext;

public class Sessao extends Util {

	/**
	 * Coloca um objeto de qualquer natureza na sessao para fins de recuperacao
	 * utilizando chave/valor.
	 * 
	 * @param chave
	 * @param valor
	 */
	public static void put(String chave, Object valor) {
		try {

		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
		}
		ActionContext.getContext().getSession().put(chave, valor);
	}

	/**
	 * Limpa a sessao para fins de logoff de usuario, mas nao impede que seja
	 * usado para outros fins.
	 */
	public static void limpar() {
		try {
			ActionContext.getContext().getSession().clear();
		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
		}

	}

	/**
	 * Obtem um objeto de qualquer natureza da sessao utilizando a chave.
	 * 
	 * @param chave
	 * @return
	 */
	public static Object get(String chave) {
		try {
			return ActionContext.getContext().getSession().get(chave);
		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
			return null;
		}

	}

	/**
	 * Remove um objeto de qualquer natureza da sessao utilizando a chave.
	 * 
	 * @param chave
	 */
	public static void remove(String chave) {
		try {
			if (get(chave) != null) {
				ActionContext.getContext().getSession().remove(chave);
			}
		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
		}

	}

	/**
	 * Limpa a sessao e coloca um objeto novo para identificar que o usuario nao
	 * esta mais logado.
	 * 
	 * @param chave
	 * @param valor
	 */
	public static void logoff() {
		try {
			limpar();
			put(LOGIN, false);
		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
		}

	}

	/**
	 * Remove todas mensagens da sessao.
	 */
	public static void removeMessages() {
		try {
			Mensagens.getInstance().clean();
			remove(MESSAGES);
		} catch (Exception e) {
			Mensagens.getInstance().setError(e.getCause().getMessage());
		}

	}

}
